package com.dataextend.mapper.cluster;

import com.alibaba.fastjson.JSONObject;
import com.dataextend.dto.PropertyListInfoDTO;
import io.swagger.models.auth.In;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface UserGroupMapper {
    /**  用户属性筛选菜单  */
    List<PropertyListInfoDTO> propertyList();

    /**
     *  用户画像 —— 人群列表页
     */
    List<JSONObject> listUsergroup(@Param("pageno") Integer pageno, @Param("pagesize") Integer pagesize);


    /**
     * 查询用户人群总数
     */
    Integer countUserGroup();


    /**
     * 查询当前最大用户人群id
     */
    String searchUserGroupId();

    /**
     *  新增用户人群
     */
    void addUsergroup(@Param("group_id") String group_id, @Param("group_name") String group_name, @Param("creater") String creater,
                      @Param("create_time") String create_time, @Param("reach_count") String reach_count, @Param("is_online") String is_online,
                      @Param("rules") String rules);

    /**
     *  新增用户人群V2 属性+行为
     */
    void addUsergroupInfo(@Param("group_id") String group_id, @Param("group_name") String group_name, @Param("creator") String creator,
                          @Param("create_time") String create_time, @Param("comment") String comment,@Param("rule_type") String rule_type,
                          @Param("property_rules") String property_rules, @Param("act_rules") String act_rules, @Param("num") Integer num);


    /**
     *  删除用户人群
     */
    void deleteUsergroup(@Param("group_id") String group_id);


    /**
     *  修改用户人群
     */
    void updateUsergroup(@Param("group_id") String group_id, @Param("group_name") String group_name, @Param("creater") String creater,
                         @Param("create_time") String create_time, @Param("reach_count") String reach_count, @Param("is_online") String is_online,
                         @Param("rules") String rules);


    /**
     *  根据人群名称进行查询
     */
    List<JSONObject> searchUsergroup(@Param("group_name") String group_name);


    /**
     *  根据人群ID进行查询
     */
    List<JSONObject> searchUsergroupById(@Param("group_id") String group_id);


    /**
     *  选择人群分析维度
     */
    List<String> analysisDimension();


    /**
     *  选择人群分析维度-备用 分布分析模块用
     */
    List<String> dimensionDistribute();


    /** 获取人群规则 */
    JSONObject getGroupInfo(@Param("groupId") String groupId);


//    List<JSONObject> getDimesions(@Param("dimension") String dimension);


    String getDimesionName(@Param("dimension") String dimension);


    List<JSONObject> getUserGroupList(@Param("groupInfo") String groupInfo, @Param("pageNo") Integer pageNo, @Param("pageSize") Integer pageSize );

    Integer getUserGroupNum(@Param("groupInfo") String groupInfo);

    void groupDelete(@Param("groupId") String groupId);
}
